<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://www.yourcompany.com/types/" elementFormDefault="qualified" targetNamespace="http://www.yourcompany.com/types/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="http://auth.hsmobile.vn/ActionSecurityService.svc?xsd=xsd3" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
  <xs:import schemaLocation="http://auth.hsmobile.vn/ActionSecurityService.svc?xsd=xsd4" namespace="http://schemas.datacontract.org/2004/07/SecurityService.MessageBase" />
  <xs:import schemaLocation="http://auth.hsmobile.vn/ActionSecurityService.svc?xsd=xsd5" namespace="http://schemas.datacontract.org/2004/07/BusinessSecurity" />
  <xs:import schemaLocation="http://auth.hsmobile.vn/ActionSecurityService.svc?xsd=xsd8" namespace="http://schemas.datacontract.org/2004/07/SecurityService.Criteria" />
  <xs:complexType name="TokenRequest">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RequestBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="TokenRequest" nillable="true" type="tns:TokenRequest" />
  <xs:complexType name="RequestBase">
    <xs:sequence>
      <xs:element minOccurs="0" name="AccessToken" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Action" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ClientTag" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CurrentPage" type="xs:int" />
      <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="LoadOptions" nillable="true" type="q1:ArrayOfstring" />
      <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/SecurityService.MessageBase" minOccurs="0" name="OptionTypes" type="q2:OptionType" />
      <xs:element minOccurs="0" name="RequestId" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="TotalPage" type="xs:int" />
      <xs:element minOccurs="0" name="Version" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RequestBase" nillable="true" type="tns:RequestBase" />
  <xs:complexType name="TokenResponse">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ResponseBase">
        <xs:sequence>
          <xs:element minOccurs="0" name="AccessToken" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="TokenResponse" nillable="true" type="tns:TokenResponse" />
  <xs:complexType name="ResponseBase">
    <xs:sequence>
      <xs:element minOccurs="0" name="Acknowledge" type="tns:AcknowledgeType" />
      <xs:element minOccurs="0" name="Build" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CorrelationId" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Message" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="MessageCode" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ReservationExpires" type="xs:dateTime" />
      <xs:element minOccurs="0" name="ReservationId" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="RowsAffected" type="xs:int" />
      <xs:element minOccurs="0" name="TotalPage" type="xs:int" />
      <xs:element minOccurs="0" name="Version" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ResponseBase" nillable="true" type="tns:ResponseBase" />
  <xs:simpleType name="AcknowledgeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Failure" />
      <xs:enumeration value="Success" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="AcknowledgeType" nillable="true" type="tns:AcknowledgeType" />
  <xs:complexType name="LoginRequest">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RequestBase">
        <xs:sequence>
          <xs:element minOccurs="0" name="Password" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="UserName" nillable="true" type="xs:string" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LoginRequest" nillable="true" type="tns:LoginRequest" />
  <xs:complexType name="LoginResponse">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ResponseBase">
        <xs:sequence>
          <xs:element minOccurs="0" name="SessionId" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="UnitId" type="xs:long" />
          <xs:element minOccurs="0" name="Uri" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="UserId" type="xs:int" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LoginResponse" nillable="true" type="tns:LoginResponse" />
  <xs:complexType name="LogoutRequest">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RequestBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LogoutRequest" nillable="true" type="tns:LogoutRequest" />
  <xs:complexType name="LogoutResponse">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ResponseBase">
        <xs:sequence />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="LogoutResponse" nillable="true" type="tns:LogoutResponse" />
  <xs:complexType name="SiteRequest">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RequestBase">
        <xs:sequence>
          <xs:element minOccurs="0" name="Criteria" nillable="true" type="tns:SiteCriteria" />
          <xs:element minOccurs="0" name="Site" nillable="true" type="tns:SiteDto" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SiteRequest" nillable="true" type="tns:SiteRequest" />
  <xs:complexType name="SiteCriteria">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:Criteria">
        <xs:sequence>
          <xs:element minOccurs="0" name="Id" type="xs:int" />
          <xs:element minOccurs="0" name="IdList" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="Keyword" nillable="true" type="xs:string" />
          <xs:element minOccurs="0" name="ParentId" type="xs:int" />
          <xs:element minOccurs="0" name="Status" nillable="true" type="xs:boolean" />
          <xs:element minOccurs="0" name="UserId" type="xs:int" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SiteCriteria" nillable="true" type="tns:SiteCriteria" />
  <xs:complexType name="Criteria">
    <xs:sequence>
      <xs:element minOccurs="0" name="OrderExpression" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SortExpression" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Criteria" nillable="true" type="tns:Criteria" />
  <xs:complexType name="SiteDto">
    <xs:sequence>
      <xs:element minOccurs="0" name="Controller" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Id" type="xs:int" />
      <xs:element minOccurs="0" name="IsGroup" nillable="true" type="xs:boolean" />
      <xs:element minOccurs="0" name="Order" type="xs:int" />
      <xs:element minOccurs="0" name="ParentId" nillable="true" type="xs:int" />
      <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/BusinessSecurity" minOccurs="0" name="PermissionInSites" nillable="true" type="q3:ArrayOfPermissionInSite" />
      <xs:element xmlns:q4="http://schemas.datacontract.org/2004/07/BusinessSecurity" minOccurs="0" name="RoleInSites" nillable="true" type="q4:ArrayOfRoleInSite" />
      <xs:element xmlns:q5="http://schemas.datacontract.org/2004/07/BusinessSecurity" minOccurs="0" name="Sites" nillable="true" type="q5:ArrayOfSite" />
      <xs:element minOccurs="0" name="Status" nillable="true" type="xs:boolean" />
      <xs:element minOccurs="0" name="Title" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="SiteDto" nillable="true" type="tns:SiteDto" />
  <xs:complexType name="SiteResponse">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:ResponseBase">
        <xs:sequence>
          <xs:element minOccurs="0" name="Site" nillable="true" type="tns:SiteDto" />
          <xs:element minOccurs="0" name="Sites" nillable="true" type="tns:ArrayOfSiteDto" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="SiteResponse" nillable="true" type="tns:SiteResponse" />
  <xs:complexType name="ArrayOfSiteDto">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="SiteDto" nillable="true" type="tns:SiteDto" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfSiteDto" nillable="true" type="tns:ArrayOfSiteDto" />
  <xs:complexType name="PermissionDto">
    <xs:sequence>
      <xs:element minOccurs="0" name="Code" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="HasImage" type="xs:boolean" />
      <xs:element minOccurs="0" name="Id" type="xs:int" />
      <xs:element minOccurs="0" name="MultiRow" type="xs:boolean" />
      <xs:element minOccurs="0" name="Order" type="xs:int" />
      <xs:element minOccurs="0" name="Roles" nillable="true" type="tns:ArrayOfRoleDto" />
      <xs:element minOccurs="0" name="ShowDefault" type="xs:boolean" />
      <xs:element minOccurs="0" name="Status" type="xs:boolean" />
      <xs:element minOccurs="0" name="Title" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="PermissionDto" nillable="true" type="tns:PermissionDto" />
  <xs:complexType name="ArrayOfRoleDto">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="RoleDto" nillable="true" type="tns:RoleDto" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfRoleDto" nillable="true" type="tns:ArrayOfRoleDto" />
  <xs:complexType name="RoleDto">
    <xs:sequence>
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="IsActive" type="xs:boolean" />
      <xs:element minOccurs="0" name="RoleId" type="xs:int" />
      <xs:element minOccurs="0" name="RoleInSites" nillable="true" type="tns:ArrayOfRoleInSiteDto" />
      <xs:element minOccurs="0" name="RoleName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Title" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RoleDto" nillable="true" type="tns:RoleDto" />
  <xs:complexType name="ArrayOfRoleInSiteDto">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="RoleInSiteDto" nillable="true" type="tns:RoleInSiteDto" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfRoleInSiteDto" nillable="true" type="tns:ArrayOfRoleInSiteDto" />
  <xs:complexType name="RoleInSiteDto">
    <xs:sequence>
      <xs:element minOccurs="0" name="PermissionId" type="xs:int" />
      <xs:element minOccurs="0" name="RoleId" type="xs:int" />
      <xs:element minOccurs="0" name="SiteId" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="RoleInSiteDto" nillable="true" type="tns:RoleInSiteDto" />
  <xs:complexType name="ArrayOfPermissionDto">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="PermissionDto" nillable="true" type="tns:PermissionDto" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfPermissionDto" nillable="true" type="tns:ArrayOfPermissionDto" />
  <xs:complexType name="RoleRequest">
    <xs:complexContent mixed="false">
      <xs:extension base="tns:RequestBase">
        <xs:sequence>
          <xs:element xmlns:q6="http://schemas.datacontract.org/2004/07/SecurityService.Criteria" minOccurs="0" name="Criteria" nillable="true" type="q6:RoleCriteria" />
          <xs:element minOccurs="0" name="Role" nillable="true" type="tns:RoleDto" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="RoleRequest" nillable="true" type="tns:RoleRequest" />
  <xs:complexType name="UserCriteria">
    <xs:sequence>
      <xs:element minOccurs="0" name="Id" type="xs:int" />
      <xs:element minOccurs="0" name="IdList" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Keyword" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Status" nillable="true" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UserCriteria" nillable="true" type="tns:UserCriteria" />
  <xs:complexType name="UserDto">
    <xs:sequence>
      <xs:element minOccurs="0" name="Address" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CreateDate" type="xs:dateTime" />
      <xs:element minOccurs="0" name="Email" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="FullName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="IsActive" type="xs:boolean" />
      <xs:element minOccurs="0" name="IsApproved" type="xs:boolean" />
      <xs:element minOccurs="0" name="IsBlocked" type="xs:boolean" />
      <xs:element minOccurs="0" name="LastActivityDate" nillable="true" type="xs:dateTime" />
      <xs:element minOccurs="0" name="Password" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Roles" nillable="true" type="tns:ArrayOfRoleDto" />
      <xs:element minOccurs="0" name="UnitId" type="xs:long" />
      <xs:element minOccurs="0" name="UserId" type="xs:int" />
      <xs:element minOccurs="0" name="UserName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UserDto" nillable="true" type="tns:UserDto" />
  <xs:complexType name="ArrayOfUserDto">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDto" nillable="true" type="tns:UserDto" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUserDto" nillable="true" type="tns:ArrayOfUserDto" />
</xs:schema>